package com.beauty.order.service;

import com.beauty.order.dto.OrderRequest;
import com.beauty.order.dto.OrderResponse;
import com.beauty.order.entity.Order;

import java.util.List;
import java.util.Map;

public interface OrderIntegrationService {
    
    /**
     * 检查产品库存
     * @param productId 产品ID
     * @param quantity 数量
     * @return 是否有足够库存
     */
    boolean checkProductInventory(String productId, Integer quantity);
    
    /**
     * 预留库存
     * @param productId 产品ID
     * @param quantity 数量
     * @return 是否预留成功
     */
    boolean reserveInventory(String productId, Integer quantity);
    
    /**
     * 释放预留库存
     * @param productId 产品ID
     * @param quantity 数量
     * @return 是否释放成功
     */
    boolean releaseInventory(String productId, Integer quantity);
    
    /**
     * 减少库存（订单完成时）
     * @param productId 产品ID
     * @param quantity 数量
     * @return 是否减少成功
     */
    boolean reduceInventory(String productId, Integer quantity);
    
    /**
     * 获取可用的物流承运商列表
     * @return 承运商列表
     */
    List<Map<String, Object>> getAvailableCarriers();
    
    /**
     * 创建物流单
     * @param order 订单
     * @param carrierName 承运商名称
     * @return 是否创建成功
     */
    boolean createShipment(Order order, String carrierName);
    
    /**
     * 获取订单相关的所有物流单
     * @param orderId 订单ID
     * @return 物流单信息
     */
    Map<String, Object> getOrderShipments(String orderId);
} 